package com.dtx.day06.dynamicProxy;

import com.dtx.day06.order.OrderDao;

import com.dtx.factory.ProxyLoggerFactoryBean;
import org.junit.Test;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;

public class TestDynamicProxy {

    @Test
    public void testProxy(){
        /**
         *  JDK 动态代理，只能代理 public 修饰的方法
         *
         *  JDK 动态代理 只能代理 具有接口的 目标对象，返回的代理对象是 和 目标对象具有相同的接口
         *
         *  接口中 所有的方法 都是 public 修饰的方法
         */
        // 需要代理的对象
        OrderDao orderDao = new OrderDaoImpl();

        InvocationHandler handler = new LoggerInvocationHandler(orderDao);

        OrderDao proxy = ProxyLoggerFactoryBean.getProxy(orderDao);

        proxy.findOrderByUser("admin");
        //System.out.println(o);
    }
}
